#ifndef __MYMALLOC_H
#define __MYMALLOC_H

/*
    内存管理,实现malloc\free\realloc等
    日期:2024-11-16
    作者: YSS
*/


typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
#ifndef NULL
#define NULL 0
#endif

// 内存块大小(单位为字节)
#define MEM_BLOCK_SIZE  32
// 内存池总大小(单位为字节) 15KB
#define MEM_BANK_SIZE   20 * 1024 
// 内存表项的数量
#define MEM_ITEM_NUM    ((MEM_BANK_SIZE)/(MEM_BLOCK_SIZE))

// 内存管理结构体
typedef struct 
{
    void (*init)(void);
    u8 (*perused)(void);
    u8 membank[MEM_BANK_SIZE];  // 内存池
    u16 memman[MEM_ITEM_NUM];   // 内存管理表
    u8  memrdy;// 内存是否初始化
}my_mem_dev;


extern my_mem_dev mem_dev;

void * mymalloc(u32 size);
void myfree(void * ptr);
void * myrealloc(void *ptr,u32 size);

#endif // __MYMALLOC_H